home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
batchut
/
bed11.zip
/
BEDLIB.BAS
< prev
next >
Wrap
BASIC Source File
|
1985-12-08
|
23KB
|
768 lines
SUB CREDITS STATIC
REM PUTS UP CREDITS WHEN PROGRAM INVOKED
DEFINT A-Z
SEC = 3
CLS
KEY OFF
RO=01:CO=30:X$="BATCH EDIT"
CALL QPRINT (X$,RO,CO)
RO=02:CO=23:X$="ver 1.1 December 7, 1985"
CALL QPRINT (X$,RO,CO)
RO=04:CO=03:X$="Copyright (c) 1985 Ken Goosens, 5020 Portsmouth Road, Fairfax, VA 22032"
CALL QPRINT (X$,RO,CO)
RO=07:CO=02:X$="You are granted a limited license to use and distribute this program provided"
CALL QPRINT (X$,RO,CO)
RO=09:CO=15:X$="1. you do not alter or remove this notice"
CALL QPRINT (X$,RO,CO)
RO=11:CO=15:X$="2. you receive no fee or charge for this program"
CALL QPRINT (X$,RO,CO)
RO=13:CO=15:X$="3. you assume all liability for using this program"
CALL QPRINT (X$,RO,CO)
CALL WAITSECORKEY (SEC)
END SUB
SUB INITIALIZE (NUMFLDS%,YNVAL$(1),ROW%(1),COL%(1),PROMPT$(1),_
FLDSIZE%(1),FLDTYPE$(1),FLDVAL$(1),HLP$(1)) STATIC
REM READS IN A TABLE DEFINING SCREEN AND FIELDS
REM PASS NUMFLD% - Number of fields to print on screen
REM YNVAL$ - Whether field preceded by Y/N field
REM ROW% - Row where field prompt is on screen
REM COL% - Column on screen where field prompt begins
REM PROMPT$ - Field prompt
REM FLDSIZE% - Size of input field to right of prompt
REM FLDTYPE$ - Type of field - L = LABEL, no field inputted
REM - N = natural number (0,1,2,3,...)
REM - S = variable length string
REM FLDVAL$ - Default field value - displayed, retained if press <rtn>
REM HLP$ - Explanation of field displayed on bottom of screen
DEFINT A-Z
FOR I=1 TO NUMFLDS%
READ YNVAL$(I),ROW%(I),COL%(I),PROMPT$(I),FLDSIZE%(I),_
FLDTYPE$(I),FLDVAL$(I),HLP$(I)
NEXT
DATA ,01,23,B A T C H E D I T O R Ver 1.1,00,L, ,
DATA ,03,02,"READ:" ,33,S, ,"Name of file that is to be changed (e.g. TEST.DAT)"
DATA ,03,42,"WRITE:" ,30,S, ,"Name of file to write changed lines to (e.g. TEST.EDI)"
DATA ,04,02,"Save specs in:" ,24,S, ,"File to save these editing specifications in (e.g. TEST.SPC)"
DATA ,05,48,EXCLUDE LINES ,00,L, ,
DATA N,07,44,With a length less than ,10,N,1 ,"Drop lines shorter than a minimum (e.g. empty lines)"
DATA N,08,44,"With a word in:" ,20,S, ,"Drop lines containing any line in file (e.g. headers with 'PAGE')"
DATA N,09,44,With a length greater than ,05,N,999,"Drop lines longer than a maximum"
DATA N,10,44,"Save lines in:" ,21,S, ,"Put excluded lines in a file so can review (e.g. TEST.EXC)"
DATA ,06,08,REPLACE ,00,L, ,
DATA N,08,04,Convert to upper case ,00, , ,"Change all characters to upper case [abc...z -> ABC...Z]"
DATA N,09,04,"Global srch/rep in:" ,15,S, ,"File of words with substitutes: <old>,<new> e.g. 'Dec 85' -> 'Jan 86' "
DATA N,10,04,"Delete these chars:" ,16,S, ,"Omit all instances of all these characters"
DATA N,11,04,"Translate from:" ,17,S,$ ,"Characters to be individually replaced (e.g. $ %)"
DATA ,12,04," to:" ,17,S," ","Replacement characters for above (e.g. blank for $,%)"
DATA ,14,08,FIX LINE LENGTH ,00,L, ,
DATA N,16,04,Pad/blanks lines shorter than ,05,N,1 ,"Set minimum length for output, right fill blanks"
DATA ,18,08,"EDIT NUMBERS [commas, () ]" ,00,L, ,
DATA N,20,04,Convert parentheses to minus sign ,00, , ,"Convert # in parentheses to negative (e.g. '(378.56)' -> '-378.56 ')"
DATA N,21,04,Omit commas ,00, , ,"Remove commas inside numbers (e.g. 1,800,412.5 -> 1800412.5)"
DATA N,22,04,"..right delimited?" ,00, , ,"Do numbers end on right with a non-numeric character? (e.g. 12 285.4VA)"
DATA ,23,04,"..Maximum # decimals:" ,02,N,0 ,"Maximum # digits after decimal point (e.g. 17.125 has 3)"
DATA ,12,48,"EDIT DATES (omit sep,reorder)" ,00,L, ,
DATA ,14,44,"# digits in input year:" ,01,N,2 ,"In data to edit, # digits in year (e.g. 86 is 2, 1986 is 4)"
DATA ,15,44,"# digits in output year:" ,01,N,2 ,"# digits you want written out for a year (1986 is all 4, 86 is last 2)"
DATA ,16,44,"Separator btw Day,Month,Year:" ,01,S,- ,"In data to edit, what is btw M,D,Y (e.g. for '12/24/86' is '/')"
DATA N,17,44,Edit date with spelled month ,00, , ,"Edit date where month is first 3 letters (e.g. '11-Oct-86')"
DATA ,18,44,"..Input date format:" ,03,S,DMY,"In incoming data to edit, order of Day,Month,Year (e.g. 11-Feb-86 is DMY)"
DATA ,19,44,"..Output date format:" ,03,S,YMD,"Desired order of output (e.g. YMD takes '11-Feb-86' to 860211)"
DATA N,20,44,Edit numeric dates ,00, , ,"Edit dates where numbers used for D,M,Y (e.g. 10-24-86)"
DATA ,21,44,"..Input date format:" ,03,S,MDY,"In incoming data to edit, order of Day,Month,Year (e.g. 10-24-86 is MDY)"
DATA ,22,44,"..Output date format:" ,03,S,YMD,"Desired order of date in output (e.g. YMD is 861024)"
END SUB
SUB PRTSCRN (NUMFLDS%,YNVAL$(1),ROW%(1),COL%(1),PROMPT$(1),FLDSIZE%(1),_
FLDTYPE$(1),FLDVAL$(1),HLP$(1)) STATIC
REM PRINTS TABLE DRIVEN SCREEN
DEFINT A-Z
CLS
FOR I=1 TO NUMFLDS%
IF YNVAL$(I)<>"" THEN_
CO% = COL%(I)-3:_
CALL QPRINT (YNVAL$(I),ROW%(I),CO%)
CALL QPRINT (PROMPT$(I),ROW%(I),COL%(I))
X% = COL%(I)+LEN(PROMPT$(I))+1
CALL ECHO (FLDVAL$(I),ROW%(I),X%,FLDSIZE%(I))
NEXT I
END SUB
SUB GETSCRN (NUMFLDS%,YNVAL$(1),ROW%(1),COL%(1),PROMPT$(1),FLDSIZE%(1),_
FLDTYPE$(1),FLDVAL$(1),HLP$(1)) STATIC
REM DOES FULL SCREEN DATA ENTRY FOR TABLE DRIVEN SCREEN
NUL$ = ""
TOPGETSCRN:
FOR I=1 TO NUMFLDS%
C% = COL%(I) - 3
CALL EXPLAIN (HLP$(I))
IF YNVAL$(I) <> "" THEN CALL GETCHAR (ROW%(I),C%,NUL$,VLDANS$,YNVAL$(I))
X = INSTR("LSN",FLDTYPE$(I))
IF X > 1 AND YNVAL$(I)<>"N" THEN_
IF X = 2 THEN_
CALL GETSTR (ROW%(I),COL%(I),PROMPT$(I),FLDSIZE%(I),FLDVAL$(I))_
ELSE_
CALL GETNATNUM (ROW%(I),COL%(I),PROMPT$(I),FLDSIZE%(I),FLDVAL$(I))
NEXT I
CALL UPCASE (FLDVAL$(2))
CALL UPCASE (FLDVAL$(3))
IF FLDVAL$(3)=FLDVAL$(2) AND FLDVAL$(2) <> "" THEN_
X$ = "Cannot WRITE to same file READING!":_
CALL EXPERR (X$):_
GOTO TOPGETSCRN
CALL UPCASE (FLDVAL$(28))
CALL UPCASE (FLDVAL$(29))
CALL UPCASE (FLDVAL$(31))
CALL UPCASE (FLDVAL$(32))
END SUB
SUB FIXLEN (L$,MINLEN%,FILLER$) STATIC
REM FILLS STRNG$ WITH FILLER$ UP TO LENGTH OF MINLEN%
DEFINT A-Z
X = LEN(L$)
IF X < MINLEN% THEN L$ = L$+ STRING$(MINLEN%-X,FILLER$)
END SUB
SUB SPELLDATE (L$,DSEP$,INLEN%(1),OUTYRLEN%,TINLEN%,TOUTLEN%,NINFLDS%,_
NOUTFLDS%,YPOS%,MONPOS%,OUTORD%(1),FILLER$) STATIC
REM CONVERTS DATES WHERE MONTH IS SPELLED BY FIRST THREE LETTERS
REM OF MONTH. REMOVES SEPARATOR BETWEEN DATE FIELDS
REM (DAY,MONTH,YEAR). REARRANGES OR OMITS DATE FIELDS. ALTERS
REM LENGTH OF YEAR FIELD. PRESERVES ORIGINAL LENGTH OF DATE
REM FIELD BY PADDING TO RIGHT UNLESS MUST EXTEND FIELD SIZE
REM PASS L$ - LINE TO EDIT
REM DSEP$ - SEPARATOR BETWEEN DATE FIELDS
REM INLEN% - LENGTH OF EACH INPUT FIELD IN DATE
REM OUTYRLEN% - LENGTH OF YEAR OUTPUT FIELD
REM TINLEN% - TOTAL LENGTH OF INPUT DATE
REM TOUTLEN% - TOTAL LENGTH OF OUTPUT DATE
REM NINFLDS% - NUMBER OF INPUT FIELDS IN DATE
REM NOUTFLDS% - NUMBER OF OUTPUT FIELDS (PARTS OF DATE)
REM YPOS% - WHICH INPUT POSITION IS YEAR
REM MONPOS% - WHICH INPUT POSITION IS MONTH
REM OUTORD% - ORDER OF OUTPUT (WHAT INPUT POS IS 1ST,2ND,...)
REM FILLER$ - CHARACTERS TO PAD DATE FIELD TO RIGHT IF OUTPUT IS
REM SHORTER THAN INPUT
REM GET L$ - EDITED LINE
DEFINT A-Z
DIM D.FIELD$(3)
INCOLD = TINLEN% - INLEN%(1)
INCREP = TOUTLEN% - INLEN%